
//todo
// 假设有k个人质和k个绑匪围成一圈。人质的编号从1到k，绑匪的编号从k+1到2k。
// 从编号1开始，每次从其中选出第m个人(隔m-1选出一人)出列。
// 希望求出m的最小值，使得最先出列的k个人都是绑匪，即都是编号从k+1到2k的人。
#include "iostream"
#include "vector"
#include "unordered_map"
#include "algorithm"

struct Counter {
    int i = 0;

    char get() {
        return 'Z' - i;
    }

    void next() {
        i++;
        if (i == 26) {
            i = 0;
        }
    }

    void clear() {
        i = 0;
    }
};

int main() {
    int a;
    bool first= true;
//    int
//    is_huiwen(1441,10);
    while (std::cin >> a) {
        Counter c;
        if(!first){
            printf("\n");
        }
        first=false;
        for (int i = 0; i < a; i++) {
            int mid = a - 1;
            for (int j = 0; j < a * 2 - 1; j++) {
                if (j == mid - i || j == mid + i) {
                    printf("%c", c.get());
                    c.next();
                    if (j == mid + i) {
                        printf("\n");
                        goto next_line;
                    }
                } else {
                    printf(" ");
                }
            }
            next_line:;
        }
        for (int i = a - 2; i >= 0; i--) {
            int mid = a - 1;
            for (int j = 0; j < a * 2 - 1; j++) {
                if (j == mid - i || j == mid + i) {
                    printf("%c", c.get());
                    c.next();
                    if (j == mid + i) {
                        printf("\n");
                        goto next_line1;
                    }
                } else {
                    printf(" ");
                }
            }
            next_line1:;
        }

    }
//    while(1){}
    return 0;
}

